<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Introduction</title>
<link rel="stylesheet" href="../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.Numeric_Bindings">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.Numeric_Bindings">
<link rel="prev" href="preface.html" title="Preface">
<link rel="next" href="tutorial.html" title="Tutorial">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="preface.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_numeric_bindings.introduction"></a><a class="link" href="introduction.html" title="Introduction"> Introduction</a>
</h2></div></div></div>
<p>
      Boost.Numeric_Bindings is a C++ library for numeric computing. It is a generic
      layer between linear algebra algorithms and data containers.
    </p>
<p>
      For the data container part, it supports both compile-time statically sized
      and run-time dynamically sized vectors, matrices, through a traits system.
      Currently it includes traits for C-arrays, for standard vectors, for uBLAS'
      containers, Eigen containers, TNT, Boost.Array, to name a few. It offers compile-time
      inspection, iterators, and views on all mentioned containers.
    </p>
<p>
      For the algorithm part, it provides a C++ interface to algorithms offered by
      BLAS, LAPACK, and more. This covers algorithms from most vendor-provided math
      libraries, such as the reference BLAS, ATLAS, Intel's MKL, AMD's CML, NVidia's
      CUDA, etc..
    </p>
<p>
      The Bindings Library contains bindings to popular non-boost (numeric) libraries,
      usually written in Fortran or C. These non-boost libraries generally use data
      structures in their API for which there might be boostified equivalents or
      other popular non-boost equivalents. The Bindings Library offers a generic
      thin layer API on top of the original API of the external library. This generic
      API accepts a whole range of data structures from different origins and usually
      hides or reduces the complexity of the original API.
    </p>
<p>
      E.g., it allows you to write
    </p>
<p>
      
</p>
<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">a</span><span class="special">[</span><span class="number">5</span><span class="special">]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">1</span><span class="special">,</span><span class="number">2</span><span class="special">,</span><span class="number">3</span><span class="special">,</span><span class="number">4</span><span class="special">,</span><span class="number">5</span> <span class="special">};</span>
<span class="keyword">double</span> <span class="identifier">b</span><span class="special">[</span><span class="number">5</span><span class="special">][</span><span class="number">5</span><span class="special">];</span>
<span class="special">...</span>
</pre>
<p>
    </p>
<p>
      In scope are container adaptors and algorithms:
    </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
          Adaptors for a wide variety of foreign container types, supporting both
          compile-time statically sized and run-time dynamically sized containers.
          At the moment, the library includes bindings for C-style arrays, ISO C++
          standard vectors, uBLAS', Eigen2, Boost.Array, Boost.MultiArray, to name
          a few.
        </li>
<li class="listitem">
          Meta-adaptors to create views on these containers, such as row, transpose,
          and upper. These are convenient when addressing BLAS or LAPACK.
        </li>
<li class="listitem">
          Iterators supporting different strategies to inspect and modify all containers
          mentioned above. This invites users to write container-independent algorithms.
        </li>
<li class="listitem">
          A BLAS module supporting cblas, blas, and cublas backends. This covers
          algorithms from the reference BLAS, ATLAS, Intel's MKL, AMD's CML, NVidia's
          CUBLAS, and many more vendor-specific BLASs.
        </li>
<li class="listitem">
          A LAPACK module supporting lapack and clapack backends. This coverts algorithms
          from the reference LAPACK, and from the routines implemented by ATLAS.
        </li>
<li class="listitem">
          A MUMPS module.
        </li>
<li class="listitem">
          A UMFPACK module.
        </li>
</ul></div>
<p>
      Out of scope:
    </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
          Another set of containers.
        </li>
<li class="listitem">
          A domain-specific language.
        </li>
</ul></div>
<p>
      What's hopefully to be added in the future:
    </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
          Backends for BLAS / LAPACK containing compile-time implementations, e.g.,
          for small and/or statically sized objects.
        </li>
<li class="listitem">
          Support for FFT libraries.
        </li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002 -2009 Rutger ter Borg, Kre&#353;imir Fresl, Thomas Klimpel,
      Toon Knapen, Karl Meerbergen<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="preface.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../images/next.png" alt="Next"></a>
</div>
</body>
</html>
